package cn.zqy.demo.day11.demo01;

/**
 * final 关键字代表最终，不可修改
 * 四种用法：
 *      1.用来修饰一个类。
 *      2.用来修饰一个方法。
 *      3.用来修饰一个局部变量。
 *      4.用来修饰一个成员变量。
 * */


public class Demo01Final {
    public static void main(String[] args) {
       /* 3.用来修饰一个局部变量。*/
        int num = 10;
        System.out.println(num);  // 10
        num = 20;
        System.out.println(num);  // 20
        System.out.println("=============");

        final int num2 = 100;
        // 报错，不能修改
        /*num2 = 200;*/

        //一次赋值，终身不变，只要保证唯一赋值即可
        final int num3;  // 正确
        num3 = 333;

        System.out.println("==============");

        /*
        * 注意：
        *   1.对【基本】类型来说，不可变说的是变量中的【数值】不可变
        *   2.对【引用】类型来说，不可变说的是变量中的【地址值】不可变
        * */

        Demo01QuoteType stu = new Demo01QuoteType(100);
        System.out.println(stu);
        System.out.println(stu.getAge());


        stu = new Demo01QuoteType(99);
        System.out.println(stu);
        System.out.println(stu.getAge());

        System.out.println("=================");

        final Demo01QuoteType st = new Demo01QuoteType(1);
        System.out.println(st);
        System.out.println(st.getAge());

        // 报错，不能改变地址值，可改变其中内容
//        st = new Demo01QuoteType(99);

        st.setAge(8888);
        System.out.println(st);
        System.out.println(st.getAge());
    }
}
